package com.cy.demo.mapper;

import com.cy.demo.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

//由mybaits提供，所有的接口都要添加@Mapper比较麻烦
@Mapper//mapper接口扫描，找到了这个接口的实现类
public interface UserMapper {

    /**
     * 根据用户名查询用户数据
     * @param username 用户名
     * @return 返回用户对象，如果没找到返回null
     */
    User findByUsername(String username);

    /**
     * 插入用户的数据
     * @param user 用户的数据
     * @return 受影响的行数(增、删、改都由受影响的行数作为返回值，可以根据返回值来判断是否执行成功)
     */
    Integer insert(User user);

    /**
     * 更改用户的密码
     * @param username 用户名
     * @return 受影响的行数(增、删、改都由受影响的行数作为返回值，可以根据返回值来判断是否执行成功)
     */
    Integer updatePassword(@Param("password") String password, @Param("username") String username, @Param("modifiedTime") Date modifiedTime, @Param("modifiedUser") String modifiedUser);

    /**
     *
     * @param uid 用户ID
     * @return 根据用户ID查找信息
     */
    User findByUid(Integer uid);


    Integer updateInfo(@Param("uid") Integer id,
                       @Param("phone") String phone,
                       @Param("email") String email,
                       @Param("modifiedTime") Date modifiedTime,
                       @Param("modifiedUser") String modifiedUser,
                       @Param("gender") Integer gender);

    /**
     * 根据用户的uid修改用户的头像
     * @param  uid 用户id
     * @param  avatar 头像的路径
     * @param  modifiedTime 修改时间
     * @param  modifiedUser 修改人
     * @return 返回受影响的行数
     */
    Integer updateAvatarByUid(@Param("uid") Integer uid,
                              @Param("avatar") String avatar,
                              @Param("modifiedTime") Date modifiedTime,
                              @Param("modifiedUser") String modifiedUser);

}
